#ifndef _MALLOC_H_
#define _MALLOC_H_

#ifdef __cplusplus
extern "C"{
#endif

typedef void (*sd_malloc_handler_t)();



/* Definition for alternative malloc and free function name used */ 
#ifdef USE_SYS_MALLOC
#define PON_FREE_FUNCTION  	sys_free
#define PON_MALLOC_FUNCTION  	sys_malloc
#define PON_REALLOC_FUNCTION  	sys_realloc
#define PON_CALLOC_FUNCTION  	sys_calloc
#else
#define PON_FREE_FUNCTION  	free
#define PON_MALLOC_FUNCTION  	malloc
#define PON_REALLOC_FUNCTION  	realloc
#define PON_CALLOC_FUNCTION  	calloc
#endif

extern sd_malloc_handler_t sd_malloc_set_handler(void (*a_handler)());

extern void *sd_malloc(size_t n);
extern void * sd_calloc (size_t n, size_t s);
extern void *sd_realloc(void *p, size_t n);
extern char *sd_strdup (const char *__str);
#if 0
#define sd_malloc	PON_MALLOC_FUNCTION
#define sd_calloc		PON_CALLOC_FUNCTION
#define sd_realloc	PON_REALLOC_FUNCTION
#define sd_strdup	strdup
#endif

#ifdef __cplusplus
}
#endif
#endif
